package org.jeecg.modules.system.rule;

import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import io.netty.util.internal.StringUtil;
import org.apache.commons.lang.StringUtils;
import org.jeecg.common.handler.IFillRuleHandler;
import org.jeecg.common.util.SpringContextUtils;
import org.jeecg.common.util.YouBianCodeUtil;
import org.jeecg.modules.system.entity.SysDepart;
import org.jeecg.modules.system.service.ISysDepartService;

import java.util.ArrayList;
import java.util.List;


/**
 * @Author scott
 * @Date 2019/12/9 11:33
 * @Description: 机构编码生成规则
 */
public class AreaCodeRule implements IFillRuleHandler {

        @Override
        public Object execute(JSONObject params, JSONObject formData) {
            String[] strArray = new String[2];
            String parentId = null;
            if (formData != null && formData.size() > 0) {
                Object obj = formData.get("parentId");
                if (obj != null) parentId = obj.toString();
            } else {
                if (params != null) {
                    Object obj = params.get("parentId");
                    if (obj != null) parentId = obj.toString();
                }
            }

            ISysDepartService sysDepartService = (ISysDepartService) SpringContextUtils.getBean("sysDepartServiceImpl");
            SysDepart maxDepart = sysDepartService.getMaxOrgCode(parentId);

            if(maxDepart != null){//如果存在同级部门，在同级部门基础上+1
                strArray[0] = String.valueOf(Integer.valueOf(maxDepart.getOrgCode()) + 1);
                strArray[1] = maxDepart.getOrgType();
            }else if(!StringUtil.isNullOrEmpty(parentId)){//根据上级编号设置
                SysDepart parentDepart = sysDepartService.getById(parentId);
                strArray[0] = parentDepart.getOrgCode()+"01";
                strArray[1] = String.valueOf(Integer.valueOf(parentDepart.getOrgType()) + 1);
            }else{
                strArray[0] = formData.getString("orgCode")+"01";
                strArray[1] = "1";
            }
//            //如果是最高级,来自前端参数
//            if (StringUtil.isNullOrEmpty(parentId)) {
//                strArray[0] = formData.getString("orgCode");
//                strArray[1] = "1";
//            } else {//反之则查询出所有同级的部门,获取结果后有两种情况,有同级和没有同级
//                if(maxDepart != null){//如果存在同级部门，在同级部门基础上+1
//                    strArray[0] = String.valueOf(Integer.valueOf(maxDepart.getOrgCode()) + 1);
//                    strArray[1] = maxDepart.getOrgType();
//                }else{//根据上级编号设置
//                    SysDepart parentDepart = sysDepartService.getById(parentId);
//                    strArray[0] = parentDepart.getOrgCode()+"01";
//                    strArray[1] = String.valueOf(Integer.valueOf(parentDepart.getOrgType()) + 1);
//                }
//            }
            return strArray;

    }
}
